1. Field of the Invention
This invention relates generally to computer systems and, more particularly, to a modified simple-boot BIOS.
2. Description of the Related Art
Version 1.0 of the Simple Boot Flag Specification (xe2x80x9cSBF Specxe2x80x9d) by Microsoft, which is incorporated herein by reference in its entirety, provides for a simplified boot process that does not run diagnostics unless a problem is known to exist. The SBF Spec provides for a boot register that resides in complementary metal oxide semiconductor (xe2x80x9cCMOSxe2x80x9d) memory and whose location is indicated by a boot table. The operating system writes to this boot register to set options for subsequent boots. The computer system""s BASIC Input/Output System (xe2x80x9cBIOSxe2x80x9d), and the BIOS on any expansion cards, detect, by evaluating the contents of the boot register, whether diagnostics need to be executed during the next boot.
The boot register resides in CMOS memory and provides a mechanism for the operating system to communicate back to the BIOS about what actions need to be taken on the next boot. Specifically, the boot register contains a diagnostics bit, DIAG. The contents of the DIAG bit indicate to the BIOS whether or not Power On Self Test (POST) diagnostics should be run during boot-up. The DIAG bit is set either by the BIOS itself or by the operating system. If set by the operating system, the DIAG bit is set during one boot to indicate to the BIOS that diagnostics should be run during the next boot. If the DIAG bit is not set, then the BIOS should not run a full suite of diagnostic routines but should instead run a much simpler boot routine, referred to herein as a simple boot routine, in order to boot the computer system as quickly as possible.
The SBF Spec therefore seeks to speed up perceived boot time by specifying that the operating system perform some of the diagnostics routines traditionally performed by the BIOS. This scheme has the result that the BIOS skips, when the simple boot flag is set, many of the configuration and test routines that have traditionally been performed by the BIOS to ensure a stable working platform. Consequently, the operating system must detect potential failures and request that the BIOS run full diagnostics during the next boot. A drawback to this scheme is that certain corruptions may cause the operating system to crash before the BIOS has an opportunity to run full diagnostics during the next boot, causing a catastrophic condition of non-recovery. What is needed is a method and apparatus that allows the BIOS to override the simple boot flag when the BIOS detects certain potential platform corruptions.
A method, apparatus, and computer system provide for modified simple boot operations. Specifically, the BIOS ignores the xe2x80x9csimple bootxe2x80x9d value in a diagnostics indicator if any one of several platform corruptions have occurred. Rather than performing a simple boot under such circumstances, the BIOS performs a full POST routine that includes one or more diagnostics modules.
In one embodiment, a method for performing a boot for a computer system is provided. The method includes evaluating the contents of a diagnostics indicator, also referred to as a simple boot flag, to determine whether the indicator contains a xe2x80x9csimple bootxe2x80x9d value. In at least one embodiment, the xe2x80x9csimple bootxe2x80x9d value is equivalent to a xe2x80x9csetxe2x80x9d state. The method includes determining, if the diagnostics indicator is set, whether a platform corruption has occurred. If both (the simple boot flag is set) and (a platform corruption has not occurred) then a simple boot is performed. Otherwise (i.e., either the simple boot flag is not set or a platform corruption has occurred, or both) one or more diagnostic routines are executed.
In at least one embodiment, determining whether a platform corruption has occurred involves evaluating the state of various software and hardware flags. If a flag is set, then it is determined that a platform error has occurred. Various embodiments determine whether various types of platform errors have occurred, including a user setup change, a BIOS change, a chassis intrusion, a power loss, a CMOS corruption, a thermal error, a fan error, a smart error, a memory error, a voltage error, and a voltage regulator error.
Another embodiment provides a computer system that performs the method described above. In at least one embodiment, the computer system includes a processor, a BIOS memory, and battery-backed CMOS system startup memory. The BIOS modules are installed in the BIOS memory. The simple boot flag resides in the system startup memory.
Another embodiment provides a BIOS that performs the method described above. The BIOS includes a BIOS memory, the BIOS memory being loaded with modules that perform the method described above.